Most conventional software applications generate trace files or log files during execution. The log files can be used to debug the software applications, either locally or remotely. For example, a software application running remotely on a customer's computer system can be debugged using the log file generated by the application.
Log files are generally large text files with little or no formatting. As such, parsing a log file to debug a program is difficult, tedious, and time consuming. Additionally, log files generally fail to clearly convey function hierarchy or sequence, thereby making it difficult to trace the flow of control within the application. Thus, debugging the program generally requires significant skill and familiarity with the application.